package com.battle.service.service.in;

import com.battle.pojo.param.caseBaseInfo.CaseStatisticsParam;
import com.battle.pojo.param.caseBaseInfo.GetCaseDiscountingParam;
import com.battle.pojo.vo.caseBaseInfo.CaseCakeVo;
import com.battle.pojo.vo.caseBaseInfo.CaseDiscountingVo;
import com.battle.pojo.vo.caseBaseInfo.CaseRankingListVo;
import com.battle.pojo.vo.caseBaseInfo.CaseStatisticsVo;
import nirvana.core.domains.vo.PageResult;
import com.battle.pojo.param.warCaseStudy.*;
import com.battle.pojo.vo.warCaseStudy.*;

import java.util.List;


/**
 * 【描 述】：战例研讨服务
 * 【环 境】：J2SE
 * 【详 细】：
 */
public interface WarCaseStudyService {

    /**
     * 创建战例研讨
     *
     * @param param
     */
    void createWarCaseStudy(CreateWarCaseStudyParam param);

    /**
     * 报名战例研讨
     * @param studyId
     * @param userId
     */
    void applyCaseStudy(Long studyId,Long userId);

    /**
     * 邀请用户战例研讨
     * @param param
     */
    void inviteCaseStudy(InviteCaseStudyParam param);

    /**
     * 结束战例研讨
     *
     * @param param
     */
    void editWarCaseStudy(EditWarCaseStudyParam param);

    /**
     * 查看研讨成果
     * @param id
     * @return
     */
    EditWarCaseStudyParam getEditWarCaseStudyParam(Long id);

    /**
     * 修改研讨成果
     * @param param
     */
    void editWarCaseResult(EditWarCaseStudyParam param);

    /**
     * 删除研讨成果
     * @param id
     */
    void removeWarCaseResult(Long id);

    /**
     * 移除战例研讨
     *
     * @param id
     */
    void removeWarCaseStudy(Long id);

    /**
     * 启动/禁用战例研讨
     *
     * @param id
     */
    void enabledWarCaseStudy(Long id);

    /**
     * 获取战例研讨详情
     *
     * @param id
     * @return
     */
    GetWarCaseStudyVo getWarCaseStudy(Long id);

    /**
     * 获取战例研讨列表
     *
     * @param param
     * @return
     */
    PageResult<GetWarCaseStudyListVo> getWarCaseStudyList(GetWarCaseStudyListParam param);


    /**
     * 获取战例研讨下拉列表
     *
     * @param param
     * @return
     */
    List<GetWarCaseStudyDownListVo> getWarCaseStudyDownList(GetWarCaseStudyDownListParam param);

    /**
     * 战例研讨排行榜
     * @param
     * @return
     */
    List<CaseRankingListVo> getCaseRankingList();

    /**
     * 战例统计数量
     * @return
     */
    CaseStatisticsVo getCaseStatistics();

    /**
     * 战例数增长-战例|研讨折线图
     * @param param
     * @return
     */
    CaseDiscountingVo getCaseDiscounting(GetCaseDiscountingParam param);


    /**
     * 类别统计-战例类别|研讨内容统计饼图
     * @param param
     * @return
     */
    CaseCakeVo getCaseCake(CaseStatisticsParam param);
}